﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//#define N 4
//
//#define Y(n) ((N+2)*n)
//
//int main()
//{
//	printf("%d\n", 2 * (N + Y(5 + 1)));
//	return 0;
//}


//计算结构体中某变量相对于首地址的偏移
//#include<stddef.h>
//struct S
//{
//	int i;
//	char c;
//	double d;
//};
//
//int main()
//{
//	printf("%d\n", offsetof(struct S,i));
//	printf("%d\n", offsetof(struct S,c));
//	printf("%d\n", offsetof(struct S,d));
//	return 0;
//}


//用宏实现交换一个整数二进制中奇偶位的交换
//#define EXCHANGE(num) (((num & 0x55555555)<<1)+((num & 0xaaaaaa)>>1))
//int main()
//{
//	int num = 0;
//	while (~scanf("%d", &num))
//	{
//		printf("%d\n", EXCHANGE(num));
//		//putchar('\0');
//	}
//	return 0;
//}


//写一个宏，计算结构体中某变量相对于首地址的偏移，并给出说明
//#include<stdio.h>
//struct S
//{
//	int i;
//	char c;
//	double d;
//};
//
//#define OFFSETOF(type,number) (size_t)&(((type*)0)->number)
//
//int main()
//{
//	printf("%d\n", OFFSETOF(struct S, i));
//	printf("%d\n", OFFSETOF(struct S, c));
//	printf("%d\n", OFFSETOF(struct S, d));
//	return 0;
//}


//#include<stdio.h>
//
//#define EXCHANGE(num) (num=(((num&0x55555555)<<1)+(num&0xaaaaaaaa)>>1))
//
//int main()
//{
//	int num = 0;
//	while (~scanf("%d", &num))
//	{
//		EXCHANGE(num);
//		printf("%d\n",num);
//	}
//	return 0;
//}


//自除数 是指可以被它包含的每一位数整除的数。
//例如，128 是一个 自除数 ，因为 128 % 1 == 0，128 % 2 == 0，128 % 8 == 0。
//自除数 不允许包含 0 。
//给定两个整数 left 和 right ，返回一个列表，列表的元素是范围 [left, right] 内所有的 自除数 。
//链接：https ://leetcode.cn/problems/self-dividing-numbers
// 
//int* selfDividingNumbers(int left, int right, int* returnSize) {
//    int* ret = (int*)malloc(1000 * (sizeof(int)));
//    *returnSize = 0;
//    for (int i = left; i <= right; i++)
//    {
//        int num = i;
//        while (num)
//        {
//            int reminder = num % 10;
//            if ((reminder == 0) || (i % reminder != 0))
//            {
//                break;
//            }
//            num /= 10;
//        }
//        if (num == 0)
//            ret[(*returnSize)++] = i;
//    }
//    return ret;
//}

#include<stdio.h>
int main()
{
	int s[12] = { 1,2,3,4,4,3,2,1,1,1,2,3 };
	int c[5] = { 0 };
	for (int i = 0; i < 12; i++)
	c[s[i]]++;
	for (int i = 1; i < 5; i++)
	printf("%d ",c[i]);
	return 0;
}
